import os
import shutil

def move_all_zip(src_base_folder, dest_base_folder):
    """
    扫描 src_base_folder 及其子目录，找到所有 *.zip 文件，
    在 dest_base_folder 下创建与原 *.zip 文件所在目录同名的文件夹，
    并将 *.zip 移动到该文件夹中。
    """
    # 遍历源目录及其子目录
    for root, dirs, files in os.walk(src_base_folder):
        for file in files:
            if file.lower().endswith('.zip'):
                # 获取others.zip文件的完整路径
                full_file_path = os.path.join(root, file)
                
                # 计算相对路径（去掉src_base_folder部分）
                rel_path = os.path.relpath(root, src_base_folder)
                
                # 创建目标文件夹路径（在dest_base_folder下创建与原目录结构相同的目录）
                dest_dir = os.path.join(dest_base_folder, rel_path)
                
                # 如果目标目录不存在，则创建它
                os.makedirs(dest_dir, exist_ok=True)
                
                # 目标文件的新路径
                dest_file_path = os.path.join(dest_dir, file)
                
                try:
                    # 移动文件
                    shutil.move(full_file_path, dest_file_path)
                    print(f"已将文件 {full_file_path} 移动到 {dest_file_path}")
                except Exception as e:
                    print(f"移动文件时出错: {e}")
            

# 源目录和目标目录
src_base_folder = r"D:\temp\photo_tmp"
dest_base_folder = r"D:\temp\photo_del"

# 调用函数执行操作
move_all_zip(src_base_folder, dest_base_folder)